import os
import logging
from logging.handlers import TimedRotatingFileHandler
from fastapi import FastAPI
from fastapi.logger import logger as fastapi_logger

app = FastAPI()


def setup_logging():
    # 根据环境变量设置日志目录
    env = os.getenv("ENV", "development")  # 默认值是development
    if env == "production":
        log_dir = "/app/logs"  # Docker中的生产环境日志目录
    elif env == "staging":
        log_dir = "/app/logs"  # Docker中的测试环境日志目录
    else:
        log_dir = os.path.join(os.path.dirname(__file__), '../logs')  # 本地开发环境日志目录

    # 如果日志目录不存在，创建它
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    # 设置日志文件路径
    log_filename = os.path.join(log_dir, 'ai-audit-service.log')

    # 创建按时间滚动的日志文件，保持最近15天日志
    log_handler = TimedRotatingFileHandler(
        log_filename,
        when="midnight",  # 每天午夜切换日志
        interval=1,  # 每1天切分一次日志
        backupCount=15  # 保留15天的日志
    )
    log_handler.setLevel(logging.INFO)  # 日志级别设置为INFO

    # 设置日志输出格式
    log_format = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - %(levelname)s - %(message)s')
    log_handler.setFormatter(log_format)

    # 创建logger对象
    logger = logging.getLogger("ai-interview-service")
    logger.addHandler(log_handler)

    # 设置日志记录级别
    logger.setLevel(logging.INFO)

    # 将日志集成到FastAPI日志系统中
    fastapi_logger.handlers = logger.handlers  # 使用我们定义的处理器
    fastapi_logger.setLevel(logger.level)  # 同步日志级别

    # 如果是本地开发环境，添加控制台输出处理器
    if env == "development":  # 非生产环境（包括开发和测试环境）
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.DEBUG)  # 控制台输出DEBUG及以上日志
        console_handler.setFormatter(log_format)
        logger.addHandler(console_handler)

    return logger


# 在 FastAPI 应用启动之前调用日志设置
logger = setup_logging()



